<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span id="local-6989586621679043126"><span id="local-6989586621679043127"></span></span><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span class="hs-cpp">
#if __GLASGOW_HASKELL__ &gt;= 709
</span><span class="hs-pragma">{-# LANGUAGE Safe #-}</span><span class="hs-cpp">
#elif __GLASGOW_HASKELL__ &gt;= 701
</span><span class="hs-pragma">{-# LANGUAGE Trustworthy #-}</span><span class="hs-cpp">
#endif
</span><span class="hs-comment">---------------------------------------------------------------</span><span>
</span><span id="line-8"></span><span class="hs-comment">-- Colin Runciman and Andy Gill, June 2006</span><span>
</span><span id="line-9"></span><span class="hs-comment">---------------------------------------------------------------</span><span>
</span><span id="line-10"></span><span>
</span><span id="line-11"></span><span class="hs-comment">-- | Datatypes and file-access routines for the per-module (@.mix@)</span><span>
</span><span id="line-12"></span><span class="hs-comment">-- indexes used by Hpc.</span><span>
</span><span id="line-13"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Trace.Hpc.Mix</span><span>
</span><span id="line-14"></span><span>        </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#Mix"><span class="hs-identifier">Mix</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-15"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#MixEntry"><span class="hs-identifier">MixEntry</span></a></span><span>
</span><span id="line-16"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#BoxLabel"><span class="hs-identifier">BoxLabel</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-17"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#CondBox"><span class="hs-identifier">CondBox</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-18"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#mixCreate"><span class="hs-identifier">mixCreate</span></a></span><span>
</span><span id="line-19"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#readMix"><span class="hs-identifier">readMix</span></a></span><span>
</span><span id="line-20"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#createMixEntryDom"><span class="hs-identifier">createMixEntryDom</span></a></span><span>
</span><span id="line-21"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#MixEntryDom"><span class="hs-identifier">MixEntryDom</span></a></span><span>
</span><span id="line-22"></span><span>        </span><span class="hs-special">)</span><span>
</span><span id="line-23"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-24"></span><span>
</span><span id="line-25"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.List.html#"><span class="hs-identifier">Data.List</span></a></span><span>
</span><span id="line-26"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Maybe.html#"><span class="hs-identifier">Data.Maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Maybe.html#catMaybes"><span class="hs-identifier">catMaybes</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/Data.Maybe.html#fromMaybe"><span class="hs-identifier">fromMaybe</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-27"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../time/src/Data.Time.html#"><span class="hs-identifier">Data.Time</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../time/src/Data.Time.Clock.Internal.UTCTime.html#UTCTime"><span class="hs-identifier">UTCTime</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-28"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../containers/src/Data.Tree.html#"><span class="hs-identifier">Data.Tree</span></a></span><span class="hs-cpp">
#if MIN_VERSION_base(4,6,0)
</span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Text.Read.html#"><span class="hs-identifier">Text.Read</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Text.Read.html#readMaybe"><span class="hs-identifier">readMaybe</span></a></span><span class="hs-special">)</span><span class="hs-cpp">
#else
</span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Char</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">isSpace</span><span class="hs-special">)</span><span class="hs-cpp">
#endif
</span><span>
</span><span id="line-35"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../filepath/src/System.FilePath.html#"><span class="hs-identifier">System.FilePath</span></a></span><span>
</span><span id="line-36"></span><span>
</span><span id="line-37"></span><span class="hs-comment">-- a module index records the attributes of each tick-box that has</span><span>
</span><span id="line-38"></span><span class="hs-comment">-- been introduced in that module, accessed by tick-number position</span><span>
</span><span id="line-39"></span><span class="hs-comment">-- in the list</span><span>
</span><span id="line-40"></span><span>
</span><span id="line-41"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Trace.Hpc.Util.html"><span class="hs-identifier">Trace.Hpc.Util</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Trace.Hpc.Util.html#HpcPos"><span class="hs-identifier">HpcPos</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Trace.Hpc.Util.html#insideHpcPos"><span class="hs-identifier">insideHpcPos</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Trace.Hpc.Util.html#Hash"><span class="hs-identifier">Hash</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Trace.Hpc.Util.html#HpcHash"><span class="hs-identifier">HpcHash</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Trace.Hpc.Util.html#catchIO"><span class="hs-identifier">catchIO</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-42"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Trace.Hpc.Tix.html"><span class="hs-identifier">Trace.Hpc.Tix</span></a></span><span class="hs-cpp">

#if !MIN_VERSION_base(4,6,0)
</span><span class="hs-identifier">readMaybe</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Read</span><span> </span><span class="hs-identifier">a</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-identifier">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Maybe</span><span> </span><span class="hs-identifier">a</span><span>
</span><span id="line-46"></span><span class="hs-identifier">readMaybe</span><span> </span><span class="hs-identifier">s</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="hs-identifier">reads</span><span> </span><span class="hs-identifier">s</span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-47"></span><span>  </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="hs-identifier">x</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">s'</span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="hs-identifier">all</span><span> </span><span class="hs-identifier">isSpace</span><span> </span><span class="hs-identifier">s'</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Just</span><span> </span><span class="hs-identifier">x</span><span>
</span><span id="line-48"></span><span>  </span><span class="hs-identifier">_</span><span>                          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Nothing</span><span class="hs-cpp">
#endif
</span><span>
</span><span id="line-51"></span><span class="hs-comment">-- | 'Mix' is the information about a modules static properties, like</span><span>
</span><span id="line-52"></span><span class="hs-comment">-- location of Tix's in a file.</span><span>
</span><span id="line-53"></span><span class="hs-comment">--</span><span>
</span><span id="line-54"></span><span class="hs-comment">-- Tab stops are the size of a tab in the provided /line:column/ values.</span><span>
</span><span id="line-55"></span><span class="hs-comment">--</span><span>
</span><span id="line-56"></span><span class="hs-comment">--  * In GHC, this is 1 (a tab is just a character)</span><span>
</span><span id="line-57"></span><span class="hs-comment">--  * With @hpc-tracer@, this is 8 (a tab represents several spaces).</span><span>
</span><span id="line-58"></span><span class="hs-keyword">data</span><span> </span><span id="Mix"><span class="annot"><a href="Trace.Hpc.Mix.html#Mix"><span class="hs-identifier hs-var">Mix</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="Mix"><span class="annot"><a href="Trace.Hpc.Mix.html#Mix"><span class="hs-identifier hs-var">Mix</span></a></span></span><span>
</span><span id="line-59"></span><span>             </span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span>           </span><span class="hs-comment">-- location of original file</span><span>
</span><span id="line-60"></span><span>             </span><span class="annot"><a href="../../time/src/Data.Time.Clock.Internal.UTCTime.html#UTCTime"><span class="hs-identifier hs-type">UTCTime</span></a></span><span>            </span><span class="hs-comment">-- time of original file's last update</span><span>
</span><span id="line-61"></span><span>             </span><span class="annot"><a href="Trace.Hpc.Util.html#Hash"><span class="hs-identifier hs-type">Hash</span></a></span><span>               </span><span class="hs-comment">-- hash of mix entry + timestamp</span><span>
</span><span id="line-62"></span><span>             </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>                </span><span class="hs-comment">-- tab stop value.</span><span>
</span><span id="line-63"></span><span>             </span><span class="hs-special">[</span><span class="annot"><a href="Trace.Hpc.Mix.html#MixEntry"><span class="hs-identifier hs-type">MixEntry</span></a></span><span class="hs-special">]</span><span>         </span><span class="hs-comment">-- entries</span><span>
</span><span id="line-64"></span><span>        </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679043069"><span id="local-6989586621679043071"><span id="local-6989586621679043084"><span class="annot"><span class="annottext">Int -&gt; Mix -&gt; ShowS
[Mix] -&gt; ShowS
Mix -&gt; String
(Int -&gt; Mix -&gt; ShowS)
-&gt; (Mix -&gt; String) -&gt; ([Mix] -&gt; ShowS) -&gt; Show Mix
forall a.
(Int -&gt; a -&gt; ShowS) -&gt; (a -&gt; String) -&gt; ([a] -&gt; ShowS) -&gt; Show a
showList :: [Mix] -&gt; ShowS
$cshowList :: [Mix] -&gt; ShowS
show :: Mix -&gt; String
$cshow :: Mix -&gt; String
showsPrec :: Int -&gt; Mix -&gt; ShowS
$cshowsPrec :: Int -&gt; Mix -&gt; ShowS
</span><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Show</span></a></span></span></span></span><span class="hs-special">,</span><span id="local-6989586621679043035"><span id="local-6989586621679043056"><span id="local-6989586621679043059"><span id="local-6989586621679043061"><span class="annot"><span class="annottext">ReadPrec [Mix]
ReadPrec Mix
Int -&gt; ReadS Mix
ReadS [Mix]
(Int -&gt; ReadS Mix)
-&gt; ReadS [Mix] -&gt; ReadPrec Mix -&gt; ReadPrec [Mix] -&gt; Read Mix
forall a.
(Int -&gt; ReadS a)
-&gt; ReadS [a] -&gt; ReadPrec a -&gt; ReadPrec [a] -&gt; Read a
readListPrec :: ReadPrec [Mix]
$creadListPrec :: ReadPrec [Mix]
readPrec :: ReadPrec Mix
$creadPrec :: ReadPrec Mix
readList :: ReadS [Mix]
$creadList :: ReadS [Mix]
readsPrec :: Int -&gt; ReadS Mix
$creadsPrec :: Int -&gt; ReadS Mix
</span><a href="../../base/src/GHC.Read.html#Read"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Read</span></a></span></span></span></span></span><span class="hs-special">,</span><span id="local-6989586621679043014"><span id="local-6989586621679043026"><span class="annot"><span class="annottext">Mix -&gt; Mix -&gt; Bool
(Mix -&gt; Mix -&gt; Bool) -&gt; (Mix -&gt; Mix -&gt; Bool) -&gt; Eq Mix
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: Mix -&gt; Mix -&gt; Bool
$c/= :: Mix -&gt; Mix -&gt; Bool
== :: Mix -&gt; Mix -&gt; Bool
$c== :: Mix -&gt; Mix -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">)</span><span>
</span><span id="line-65"></span><span>
</span><span id="line-66"></span><span class="hs-keyword">type</span><span> </span><span id="MixEntry"><span class="annot"><a href="Trace.Hpc.Mix.html#MixEntry"><span class="hs-identifier hs-var">MixEntry</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Trace.Hpc.Util.html#HpcPos"><span class="hs-identifier hs-type">HpcPos</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#BoxLabel"><span class="hs-identifier hs-type">BoxLabel</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-67"></span><span>
</span><span id="line-68"></span><span class="hs-keyword">data</span><span> </span><span id="BoxLabel"><span class="annot"><a href="Trace.Hpc.Mix.html#BoxLabel"><span class="hs-identifier hs-var">BoxLabel</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="ExpBox"><span class="annot"><a href="Trace.Hpc.Mix.html#ExpBox"><span class="hs-identifier hs-var">ExpBox</span></a></span></span><span>  </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="hs-comment">-- isAlt</span><span>
</span><span id="line-69"></span><span>              </span><span class="hs-glyph">|</span><span> </span><span id="TopLevelBox"><span class="annot"><a href="Trace.Hpc.Mix.html#TopLevelBox"><span class="hs-identifier hs-var">TopLevelBox</span></a></span></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-70"></span><span>              </span><span class="hs-glyph">|</span><span> </span><span id="LocalBox"><span class="annot"><a href="Trace.Hpc.Mix.html#LocalBox"><span class="hs-identifier hs-var">LocalBox</span></a></span></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-71"></span><span>              </span><span class="hs-glyph">|</span><span> </span><span id="BinBox"><span class="annot"><a href="Trace.Hpc.Mix.html#BinBox"><span class="hs-identifier hs-var">BinBox</span></a></span></span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#CondBox"><span class="hs-identifier hs-type">CondBox</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-72"></span><span>              </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679042975"><span id="local-6989586621679042997"><span id="local-6989586621679043000"><span id="local-6989586621679043002"><span class="annot"><span class="annottext">ReadPrec [BoxLabel]
ReadPrec BoxLabel
Int -&gt; ReadS BoxLabel
ReadS [BoxLabel]
(Int -&gt; ReadS BoxLabel)
-&gt; ReadS [BoxLabel]
-&gt; ReadPrec BoxLabel
-&gt; ReadPrec [BoxLabel]
-&gt; Read BoxLabel
forall a.
(Int -&gt; ReadS a)
-&gt; ReadS [a] -&gt; ReadPrec a -&gt; ReadPrec [a] -&gt; Read a
readListPrec :: ReadPrec [BoxLabel]
$creadListPrec :: ReadPrec [BoxLabel]
readPrec :: ReadPrec BoxLabel
$creadPrec :: ReadPrec BoxLabel
readList :: ReadS [BoxLabel]
$creadList :: ReadS [BoxLabel]
readsPrec :: Int -&gt; ReadS BoxLabel
$creadsPrec :: Int -&gt; ReadS BoxLabel
</span><a href="../../base/src/GHC.Read.html#Read"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Read</span></a></span></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679042956"><span id="local-6989586621679042958"><span id="local-6989586621679042971"><span class="annot"><span class="annottext">Int -&gt; BoxLabel -&gt; ShowS
[BoxLabel] -&gt; ShowS
BoxLabel -&gt; String
(Int -&gt; BoxLabel -&gt; ShowS)
-&gt; (BoxLabel -&gt; String) -&gt; ([BoxLabel] -&gt; ShowS) -&gt; Show BoxLabel
forall a.
(Int -&gt; a -&gt; ShowS) -&gt; (a -&gt; String) -&gt; ([a] -&gt; ShowS) -&gt; Show a
showList :: [BoxLabel] -&gt; ShowS
$cshowList :: [BoxLabel] -&gt; ShowS
show :: BoxLabel -&gt; String
$cshow :: BoxLabel -&gt; String
showsPrec :: Int -&gt; BoxLabel -&gt; ShowS
$cshowsPrec :: Int -&gt; BoxLabel -&gt; ShowS
</span><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Show</span></a></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679042944"><span id="local-6989586621679042953"><span class="annot"><span class="annottext">BoxLabel -&gt; BoxLabel -&gt; Bool
(BoxLabel -&gt; BoxLabel -&gt; Bool)
-&gt; (BoxLabel -&gt; BoxLabel -&gt; Bool) -&gt; Eq BoxLabel
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: BoxLabel -&gt; BoxLabel -&gt; Bool
$c/= :: BoxLabel -&gt; BoxLabel -&gt; Bool
== :: BoxLabel -&gt; BoxLabel -&gt; Bool
$c== :: BoxLabel -&gt; BoxLabel -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679042919"><span id="local-6989586621679042921"><span id="local-6989586621679042923"><span id="local-6989586621679042925"><span id="local-6989586621679042927"><span id="local-6989586621679042929"><span id="local-6989586621679042939"><span class="annot"><span class="annottext">Eq BoxLabel
Eq BoxLabel
-&gt; (BoxLabel -&gt; BoxLabel -&gt; Ordering)
-&gt; (BoxLabel -&gt; BoxLabel -&gt; Bool)
-&gt; (BoxLabel -&gt; BoxLabel -&gt; Bool)
-&gt; (BoxLabel -&gt; BoxLabel -&gt; Bool)
-&gt; (BoxLabel -&gt; BoxLabel -&gt; Bool)
-&gt; (BoxLabel -&gt; BoxLabel -&gt; BoxLabel)
-&gt; (BoxLabel -&gt; BoxLabel -&gt; BoxLabel)
-&gt; Ord BoxLabel
BoxLabel -&gt; BoxLabel -&gt; Bool
BoxLabel -&gt; BoxLabel -&gt; Ordering
BoxLabel -&gt; BoxLabel -&gt; BoxLabel
forall a.
Eq a
-&gt; (a -&gt; a -&gt; Ordering)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; a)
-&gt; (a -&gt; a -&gt; a)
-&gt; Ord a
min :: BoxLabel -&gt; BoxLabel -&gt; BoxLabel
$cmin :: BoxLabel -&gt; BoxLabel -&gt; BoxLabel
max :: BoxLabel -&gt; BoxLabel -&gt; BoxLabel
$cmax :: BoxLabel -&gt; BoxLabel -&gt; BoxLabel
&gt;= :: BoxLabel -&gt; BoxLabel -&gt; Bool
$c&gt;= :: BoxLabel -&gt; BoxLabel -&gt; Bool
&gt; :: BoxLabel -&gt; BoxLabel -&gt; Bool
$c&gt; :: BoxLabel -&gt; BoxLabel -&gt; Bool
&lt;= :: BoxLabel -&gt; BoxLabel -&gt; Bool
$c&lt;= :: BoxLabel -&gt; BoxLabel -&gt; Bool
&lt; :: BoxLabel -&gt; BoxLabel -&gt; Bool
$c&lt; :: BoxLabel -&gt; BoxLabel -&gt; Bool
compare :: BoxLabel -&gt; BoxLabel -&gt; Ordering
$ccompare :: BoxLabel -&gt; BoxLabel -&gt; Ordering
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Ord</span></span></span></span></span></span></span></span></span><span class="hs-special">)</span><span>
</span><span id="line-73"></span><span>
</span><span id="line-74"></span><span class="hs-keyword">data</span><span> </span><span id="CondBox"><span class="annot"><a href="Trace.Hpc.Mix.html#CondBox"><span class="hs-identifier hs-var">CondBox</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="GuardBinBox"><span class="annot"><a href="Trace.Hpc.Mix.html#GuardBinBox"><span class="hs-identifier hs-var">GuardBinBox</span></a></span></span><span>
</span><span id="line-75"></span><span>             </span><span class="hs-glyph">|</span><span> </span><span id="CondBinBox"><span class="annot"><a href="Trace.Hpc.Mix.html#CondBinBox"><span class="hs-identifier hs-var">CondBinBox</span></a></span></span><span>
</span><span id="line-76"></span><span>             </span><span class="hs-glyph">|</span><span> </span><span id="QualBinBox"><span class="annot"><a href="Trace.Hpc.Mix.html#QualBinBox"><span class="hs-identifier hs-var">QualBinBox</span></a></span></span><span>
</span><span id="line-77"></span><span>              </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679042901"><span id="local-6989586621679042906"><span id="local-6989586621679042909"><span id="local-6989586621679042911"><span class="annot"><span class="annottext">ReadPrec [CondBox]
ReadPrec CondBox
Int -&gt; ReadS CondBox
ReadS [CondBox]
(Int -&gt; ReadS CondBox)
-&gt; ReadS [CondBox]
-&gt; ReadPrec CondBox
-&gt; ReadPrec [CondBox]
-&gt; Read CondBox
forall a.
(Int -&gt; ReadS a)
-&gt; ReadS [a] -&gt; ReadPrec a -&gt; ReadPrec [a] -&gt; Read a
readListPrec :: ReadPrec [CondBox]
$creadListPrec :: ReadPrec [CondBox]
readPrec :: ReadPrec CondBox
$creadPrec :: ReadPrec CondBox
readList :: ReadS [CondBox]
$creadList :: ReadS [CondBox]
readsPrec :: Int -&gt; ReadS CondBox
$creadsPrec :: Int -&gt; ReadS CondBox
</span><a href="../../base/src/GHC.Read.html#Read"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Read</span></a></span></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679042894"><span id="local-6989586621679042896"><span id="local-6989586621679042898"><span class="annot"><span class="annottext">Int -&gt; CondBox -&gt; ShowS
[CondBox] -&gt; ShowS
CondBox -&gt; String
(Int -&gt; CondBox -&gt; ShowS)
-&gt; (CondBox -&gt; String) -&gt; ([CondBox] -&gt; ShowS) -&gt; Show CondBox
forall a.
(Int -&gt; a -&gt; ShowS) -&gt; (a -&gt; String) -&gt; ([a] -&gt; ShowS) -&gt; Show a
showList :: [CondBox] -&gt; ShowS
$cshowList :: [CondBox] -&gt; ShowS
show :: CondBox -&gt; String
$cshow :: CondBox -&gt; String
showsPrec :: Int -&gt; CondBox -&gt; ShowS
$cshowsPrec :: Int -&gt; CondBox -&gt; ShowS
</span><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Show</span></a></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679042890"><span id="local-6989586621679042892"><span class="annot"><span class="annottext">CondBox -&gt; CondBox -&gt; Bool
(CondBox -&gt; CondBox -&gt; Bool)
-&gt; (CondBox -&gt; CondBox -&gt; Bool) -&gt; Eq CondBox
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: CondBox -&gt; CondBox -&gt; Bool
$c/= :: CondBox -&gt; CondBox -&gt; Bool
== :: CondBox -&gt; CondBox -&gt; Bool
$c== :: CondBox -&gt; CondBox -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679042871"><span id="local-6989586621679042873"><span id="local-6989586621679042876"><span id="local-6989586621679042879"><span id="local-6989586621679042882"><span id="local-6989586621679042884"><span id="local-6989586621679042886"><span class="annot"><span class="annottext">Eq CondBox
Eq CondBox
-&gt; (CondBox -&gt; CondBox -&gt; Ordering)
-&gt; (CondBox -&gt; CondBox -&gt; Bool)
-&gt; (CondBox -&gt; CondBox -&gt; Bool)
-&gt; (CondBox -&gt; CondBox -&gt; Bool)
-&gt; (CondBox -&gt; CondBox -&gt; Bool)
-&gt; (CondBox -&gt; CondBox -&gt; CondBox)
-&gt; (CondBox -&gt; CondBox -&gt; CondBox)
-&gt; Ord CondBox
CondBox -&gt; CondBox -&gt; Bool
CondBox -&gt; CondBox -&gt; Ordering
CondBox -&gt; CondBox -&gt; CondBox
forall a.
Eq a
-&gt; (a -&gt; a -&gt; Ordering)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; a)
-&gt; (a -&gt; a -&gt; a)
-&gt; Ord a
min :: CondBox -&gt; CondBox -&gt; CondBox
$cmin :: CondBox -&gt; CondBox -&gt; CondBox
max :: CondBox -&gt; CondBox -&gt; CondBox
$cmax :: CondBox -&gt; CondBox -&gt; CondBox
&gt;= :: CondBox -&gt; CondBox -&gt; Bool
$c&gt;= :: CondBox -&gt; CondBox -&gt; Bool
&gt; :: CondBox -&gt; CondBox -&gt; Bool
$c&gt; :: CondBox -&gt; CondBox -&gt; Bool
&lt;= :: CondBox -&gt; CondBox -&gt; Bool
$c&lt;= :: CondBox -&gt; CondBox -&gt; Bool
&lt; :: CondBox -&gt; CondBox -&gt; Bool
$c&lt; :: CondBox -&gt; CondBox -&gt; Bool
compare :: CondBox -&gt; CondBox -&gt; Ordering
$ccompare :: CondBox -&gt; CondBox -&gt; Ordering
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Ord</span></span></span></span></span></span></span></span></span><span class="hs-special">)</span><span>
</span><span id="line-78"></span><span>
</span><span id="line-79"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="Trace.Hpc.Util.html#HpcHash"><span class="hs-identifier hs-type">HpcHash</span></a></span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#BoxLabel"><span class="hs-identifier hs-type">BoxLabel</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-80"></span><span>   </span><span id="local-6989586621679042846"><span class="annot"><span class="annottext">toHash :: BoxLabel -&gt; Hash
</span><a href="Trace.Hpc.Util.html#toHash"><span class="hs-identifier hs-var hs-var hs-var hs-var">toHash</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Trace.Hpc.Mix.html#ExpBox"><span class="hs-identifier hs-type">ExpBox</span></a></span><span> </span><span id="local-6989586621679042844"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621679042844"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Hash
</span><span class="hs-number">0x100</span></span><span> </span><span class="annot"><span class="annottext">Hash -&gt; Hash -&gt; Hash
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Hash
forall a. HpcHash a =&gt; a -&gt; Hash
</span><a href="Trace.Hpc.Util.html#toHash"><span class="hs-identifier hs-var">toHash</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621679042844"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-81"></span><span>   </span><span class="annot"><a href="Trace.Hpc.Util.html#toHash"><span class="hs-identifier hs-var">toHash</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Trace.Hpc.Mix.html#TopLevelBox"><span class="hs-identifier hs-type">TopLevelBox</span></a></span><span> </span><span id="local-6989586621679042842"><span class="annot"><span class="annottext">[String]
</span><a href="#local-6989586621679042842"><span class="hs-identifier hs-var">nm</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Hash
</span><span class="hs-number">0x200</span></span><span> </span><span class="annot"><span class="annottext">Hash -&gt; Hash -&gt; Hash
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">[String] -&gt; Hash
forall a. HpcHash a =&gt; a -&gt; Hash
</span><a href="Trace.Hpc.Util.html#toHash"><span class="hs-identifier hs-var">toHash</span></a></span><span> </span><span class="annot"><span class="annottext">[String]
</span><a href="#local-6989586621679042842"><span class="hs-identifier hs-var">nm</span></a></span><span>
</span><span id="line-82"></span><span>   </span><span class="annot"><a href="Trace.Hpc.Util.html#toHash"><span class="hs-identifier hs-var">toHash</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Trace.Hpc.Mix.html#LocalBox"><span class="hs-identifier hs-type">LocalBox</span></a></span><span> </span><span id="local-6989586621679042841"><span class="annot"><span class="annottext">[String]
</span><a href="#local-6989586621679042841"><span class="hs-identifier hs-var">nm</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Hash
</span><span class="hs-number">0x300</span></span><span> </span><span class="annot"><span class="annottext">Hash -&gt; Hash -&gt; Hash
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">[String] -&gt; Hash
forall a. HpcHash a =&gt; a -&gt; Hash
</span><a href="Trace.Hpc.Util.html#toHash"><span class="hs-identifier hs-var">toHash</span></a></span><span> </span><span class="annot"><span class="annottext">[String]
</span><a href="#local-6989586621679042841"><span class="hs-identifier hs-var">nm</span></a></span><span>
</span><span id="line-83"></span><span>   </span><span class="annot"><a href="Trace.Hpc.Util.html#toHash"><span class="hs-identifier hs-var">toHash</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Trace.Hpc.Mix.html#BinBox"><span class="hs-identifier hs-type">BinBox</span></a></span><span> </span><span id="local-6989586621679042840"><span class="annot"><span class="annottext">CondBox
</span><a href="#local-6989586621679042840"><span class="hs-identifier hs-var">cond</span></a></span></span><span> </span><span id="local-6989586621679042839"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621679042839"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Hash
</span><span class="hs-number">0x400</span></span><span> </span><span class="annot"><span class="annottext">Hash -&gt; Hash -&gt; Hash
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">(CondBox, Bool) -&gt; Hash
forall a. HpcHash a =&gt; a -&gt; Hash
</span><a href="Trace.Hpc.Util.html#toHash"><span class="hs-identifier hs-var">toHash</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CondBox
</span><a href="#local-6989586621679042840"><span class="hs-identifier hs-var">cond</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621679042839"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-84"></span><span>
</span><span id="line-85"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="Trace.Hpc.Util.html#HpcHash"><span class="hs-identifier hs-type">HpcHash</span></a></span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#CondBox"><span class="hs-identifier hs-type">CondBox</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-86"></span><span>   </span><span id="local-6989586621679042834"><span class="annot"><span class="annottext">toHash :: CondBox -&gt; Hash
</span><a href="#local-6989586621679042834"><span class="hs-identifier hs-var hs-var hs-var hs-var">toHash</span></a></span></span><span> </span><span class="annot"><span class="annottext">CondBox
</span><a href="Trace.Hpc.Mix.html#GuardBinBox"><span class="hs-identifier hs-var">GuardBinBox</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Hash
</span><span class="hs-number">0x10</span></span><span>
</span><span id="line-87"></span><span>   </span><span class="annot"><a href="Trace.Hpc.Util.html#toHash"><span class="hs-identifier hs-var">toHash</span></a></span><span> </span><span class="annot"><span class="annottext">CondBox
</span><a href="Trace.Hpc.Mix.html#CondBinBox"><span class="hs-identifier hs-var">CondBinBox</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Hash
</span><span class="hs-number">0x20</span></span><span>
</span><span id="line-88"></span><span>   </span><span class="annot"><a href="Trace.Hpc.Util.html#toHash"><span class="hs-identifier hs-var">toHash</span></a></span><span> </span><span class="annot"><span class="annottext">CondBox
</span><a href="Trace.Hpc.Mix.html#QualBinBox"><span class="hs-identifier hs-var">QualBinBox</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Hash
</span><span class="hs-number">0x30</span></span><span>
</span><span id="line-89"></span><span>
</span><span id="line-90"></span><span>
</span><span id="line-91"></span><span class="hs-comment">-- | Create is mix file.</span><span>
</span><span id="line-92"></span><span class="annot"><a href="Trace.Hpc.Mix.html#mixCreate"><span class="hs-identifier hs-type">mixCreate</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-comment">-- ^ Dir Name</span><span>
</span><span id="line-93"></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-comment">-- ^ module Name</span><span>
</span><span id="line-94"></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#Mix"><span class="hs-identifier hs-type">Mix</span></a></span><span>    </span><span class="hs-comment">-- ^ Mix DataStructure</span><span>
</span><span id="line-95"></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-96"></span><span id="mixCreate"><span class="annot"><span class="annottext">mixCreate :: String -&gt; String -&gt; Mix -&gt; IO ()
</span><a href="Trace.Hpc.Mix.html#mixCreate"><span class="hs-identifier hs-var hs-var">mixCreate</span></a></span></span><span> </span><span id="local-6989586621679042833"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042833"><span class="hs-identifier hs-var">dirName</span></a></span></span><span> </span><span id="local-6989586621679042832"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042832"><span class="hs-identifier hs-var">modName</span></a></span></span><span> </span><span id="local-6989586621679042831"><span class="annot"><span class="annottext">Mix
</span><a href="#local-6989586621679042831"><span class="hs-identifier hs-var">mix</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-97"></span><span>   </span><span class="annot"><span class="annottext">String -&gt; String -&gt; IO ()
</span><a href="../../base/src/System.IO.html#writeFile"><span class="hs-identifier hs-var">writeFile</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; ShowS
</span><a href="Trace.Hpc.Mix.html#mixName"><span class="hs-identifier hs-var">mixName</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042833"><span class="hs-identifier hs-var">dirName</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042832"><span class="hs-identifier hs-var">modName</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Mix -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Mix
</span><a href="#local-6989586621679042831"><span class="hs-identifier hs-var">mix</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-98"></span><span>
</span><span id="line-99"></span><span class="hs-comment">-- | Read a mix file.</span><span>
</span><span id="line-100"></span><span class="annot"><a href="Trace.Hpc.Mix.html#readMix"><span class="hs-identifier hs-type">readMix</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span class="hs-special">]</span><span>                 </span><span class="hs-comment">-- ^ Dir Names</span><span>
</span><span id="line-101"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/Data.Either.html#Either"><span class="hs-identifier hs-type">Either</span></a></span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="annot"><a href="Trace.Hpc.Tix.html#TixModule"><span class="hs-identifier hs-type">TixModule</span></a></span><span>  </span><span class="hs-comment">-- ^ module wanted</span><span>
</span><span id="line-102"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#Mix"><span class="hs-identifier hs-type">Mix</span></a></span><span>
</span><span id="line-103"></span><span id="readMix"><span class="annot"><span class="annottext">readMix :: [String] -&gt; Either String TixModule -&gt; IO Mix
</span><a href="Trace.Hpc.Mix.html#readMix"><span class="hs-identifier hs-var hs-var">readMix</span></a></span></span><span> </span><span id="local-6989586621679042827"><span class="annot"><span class="annottext">[String]
</span><a href="#local-6989586621679042827"><span class="hs-identifier hs-var">dirNames</span></a></span></span><span> </span><span id="local-6989586621679042826"><span class="annot"><span class="annottext">Either String TixModule
</span><a href="#local-6989586621679042826"><span class="hs-identifier hs-var">mod'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-104"></span><span>   </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621679042825"><span class="annot"><span class="annottext">modName :: String
</span><a href="#local-6989586621679042825"><span class="hs-identifier hs-var hs-var">modName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ShowS -&gt; (TixModule -&gt; String) -&gt; Either String TixModule -&gt; String
forall a c b. (a -&gt; c) -&gt; (b -&gt; c) -&gt; Either a b -&gt; c
</span><a href="../../base/src/Data.Either.html#either"><span class="hs-identifier hs-var">either</span></a></span><span> </span><span class="annot"><span class="annottext">ShowS
forall a. a -&gt; a
</span><a href="../../base/src/GHC.Base.html#id"><span class="hs-identifier hs-var">id</span></a></span><span> </span><span class="annot"><span class="annottext">TixModule -&gt; String
</span><a href="Trace.Hpc.Tix.html#tixModuleName"><span class="hs-identifier hs-var">tixModuleName</span></a></span><span> </span><span class="annot"><span class="annottext">Either String TixModule
</span><a href="#local-6989586621679042826"><span class="hs-identifier hs-var">mod'</span></a></span><span>
</span><span id="line-105"></span><span>   </span><span id="local-6989586621679042821"><span class="annot"><span class="annottext">[Maybe Mix]
</span><a href="#local-6989586621679042821"><span class="hs-identifier hs-var">res</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[IO (Maybe Mix)] -&gt; IO [Maybe Mix]
forall (t :: * -&gt; *) (m :: * -&gt; *) a.
(Traversable t, Monad m) =&gt;
t (m a) -&gt; m (t a)
</span><a href="../../base/src/Data.Traversable.html#sequence"><span class="hs-identifier hs-var">sequence</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">do</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621679042819"><span class="annot"><span class="annottext">mixPath :: String
</span><a href="#local-6989586621679042819"><span class="hs-identifier hs-var hs-var">mixPath</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
</span><a href="Trace.Hpc.Mix.html#mixName"><span class="hs-identifier hs-var">mixName</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042818"><span class="hs-identifier hs-var">dirName</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042825"><span class="hs-identifier hs-var">modName</span></a></span><span>
</span><span id="line-106"></span><span>                             </span><span id="local-6989586621679042815"><span class="annot"><span class="annottext">parseError :: a
</span><a href="#local-6989586621679042815"><span class="hs-identifier hs-var hs-var">parseError</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; a
forall a. HasCallStack =&gt; String -&gt; a
</span><a href="../../base/src/GHC.Err.html#error"><span class="hs-identifier hs-var">error</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;can not parse &quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042819"><span class="hs-identifier hs-var">mixPath</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-107"></span><span>                             </span><span id="local-6989586621679042812"><span class="annot"><span class="annottext">parse :: String -&gt; Mix
</span><a href="#local-6989586621679042812"><span class="hs-identifier hs-var hs-var">parse</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Mix -&gt; Maybe Mix -&gt; Mix
forall a. a -&gt; Maybe a -&gt; a
</span><a href="../../base/src/Data.Maybe.html#fromMaybe"><span class="hs-identifier hs-var">fromMaybe</span></a></span><span> </span><span class="annot"><span class="annottext">Mix
forall {a}. a
</span><a href="#local-6989586621679042815"><span class="hs-identifier hs-var">parseError</span></a></span><span> </span><span class="annot"><span class="annottext">(Maybe Mix -&gt; Mix) -&gt; (String -&gt; Maybe Mix) -&gt; String -&gt; Mix
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; Maybe Mix
forall a. Read a =&gt; String -&gt; Maybe a
</span><a href="../../base/src/Text.Read.html#readMaybe"><span class="hs-identifier hs-var">readMaybe</span></a></span><span>
</span><span id="line-108"></span><span>                         </span><span id="local-6989586621679042810"><span class="annot"><span class="annottext">Mix
</span><a href="#local-6989586621679042810"><span class="hs-identifier hs-var">mix</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">String -&gt; Mix
</span><a href="#local-6989586621679042812"><span class="hs-identifier hs-var">parse</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; Mix) -&gt; IO String -&gt; IO Mix
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-operator hs-var">`fmap`</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; IO String
</span><a href="../../base/src/System.IO.html#readFile"><span class="hs-identifier hs-var">readFile</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042819"><span class="hs-identifier hs-var">mixPath</span></a></span><span>
</span><span id="line-109"></span><span>                         </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Either String TixModule
</span><a href="#local-6989586621679042826"><span class="hs-identifier hs-var">mod'</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-110"></span><span>                            </span><span class="annot"><a href="../../base/src/Data.Either.html#Left"><span class="hs-identifier hs-type">Left</span></a></span><span>  </span><span class="annot"><span class="annottext">String
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe Mix -&gt; IO (Maybe Mix)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(Maybe Mix -&gt; IO (Maybe Mix)) -&gt; Maybe Mix -&gt; IO (Maybe Mix)
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Mix -&gt; Maybe Mix
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Mix
</span><a href="#local-6989586621679042810"><span class="hs-identifier hs-var">mix</span></a></span><span> </span><span class="hs-comment">-- Bypass hash check</span><span>
</span><span id="line-111"></span><span>                            </span><span class="annot"><a href="../../base/src/Data.Either.html#Right"><span class="hs-identifier hs-type">Right</span></a></span><span> </span><span id="local-6989586621679042808"><span class="annot"><span class="annottext">TixModule
</span><a href="#local-6989586621679042808"><span class="hs-identifier hs-var">tix</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe Mix -&gt; IO (Maybe Mix)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(Maybe Mix -&gt; IO (Maybe Mix)) -&gt; Maybe Mix -&gt; IO (Maybe Mix)
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">TixModule -&gt; Mix -&gt; String -&gt; Maybe Mix
</span><a href="Trace.Hpc.Mix.html#checkHash"><span class="hs-identifier hs-var">checkHash</span></a></span><span> </span><span class="annot"><span class="annottext">TixModule
</span><a href="#local-6989586621679042808"><span class="hs-identifier hs-var">tix</span></a></span><span> </span><span class="annot"><span class="annottext">Mix
</span><a href="#local-6989586621679042810"><span class="hs-identifier hs-var">mix</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042819"><span class="hs-identifier hs-var">mixPath</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-112"></span><span>                     </span><span class="annot"><span class="annottext">IO (Maybe Mix) -&gt; (IOException -&gt; IO (Maybe Mix)) -&gt; IO (Maybe Mix)
forall a. IO a -&gt; (IOException -&gt; IO a) -&gt; IO a
</span><a href="Trace.Hpc.Util.html#catchIO"><span class="hs-operator hs-var">`catchIO`</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span> </span><span class="annot"><span class="annottext">IOException
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe Mix -&gt; IO (Maybe Mix)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(Maybe Mix -&gt; IO (Maybe Mix)) -&gt; Maybe Mix -&gt; IO (Maybe Mix)
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Mix
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-113"></span><span>                   </span><span class="hs-glyph">|</span><span> </span><span id="local-6989586621679042818"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042818"><span class="hs-identifier hs-var">dirName</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[String]
</span><a href="#local-6989586621679042827"><span class="hs-identifier hs-var">dirNames</span></a></span><span>
</span><span id="line-114"></span><span>                   </span><span class="hs-special">]</span><span>
</span><span id="line-115"></span><span>   </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">[Maybe Mix] -&gt; [Mix]
forall a. [Maybe a] -&gt; [a]
</span><a href="../../base/src/Data.Maybe.html#catMaybes"><span class="hs-identifier hs-var">catMaybes</span></a></span><span> </span><span class="annot"><span class="annottext">[Maybe Mix]
</span><a href="#local-6989586621679042821"><span class="hs-identifier hs-var">res</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-116"></span><span>     </span><span id="local-6989586621679042806"><span class="annot"><span class="annottext">xs :: [Mix]
</span><a href="#local-6989586621679042806"><span class="hs-identifier hs-var">xs</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span id="local-6989586621679042805"><span class="annot"><span class="annottext">Mix
</span><a href="#local-6989586621679042805"><span class="hs-identifier hs-var">x</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span class="annot"><span class="annottext">Mix
</span><span class="hs-identifier">_</span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span class="annot"><span class="annottext">[Mix]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">(Mix -&gt; Bool) -&gt; [Mix] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; (a -&gt; Bool) -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#any"><span class="hs-identifier hs-var">any</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Mix -&gt; Mix -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">/=</span></span><span> </span><span class="annot"><span class="annottext">Mix
</span><a href="#local-6989586621679042805"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Mix] -&gt; [Mix]
forall a. [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#tail"><span class="hs-identifier hs-var">tail</span></a></span><span> </span><span class="annot"><span class="annottext">[Mix]
</span><a href="#local-6989586621679042806"><span class="hs-identifier hs-var">xs</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-117"></span><span>              </span><span class="hs-comment">-- Only complain if multiple *different* `Mix` files with the</span><span>
</span><span id="line-118"></span><span>              </span><span class="hs-comment">-- same name are found (#9619).</span><span>
</span><span id="line-119"></span><span>              </span><span class="annot"><span class="annottext">String -&gt; IO Mix
forall a. HasCallStack =&gt; String -&gt; a
</span><a href="../../base/src/GHC.Err.html#error"><span class="hs-identifier hs-var">error</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; IO Mix) -&gt; String -&gt; IO Mix
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;found &quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Mix] -&gt; Int
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Int
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="annot"><span class="annottext">[Mix]
</span><a href="#local-6989586621679042806"><span class="hs-identifier hs-var">xs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; different instances of &quot;</span></span><span>
</span><span id="line-120"></span><span>                      </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042825"><span class="hs-identifier hs-var">modName</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; in &quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; [String] -&gt; String
forall a. [a] -&gt; [[a]] -&gt; [a]
</span><a href="../../base/src/Data.OldList.html#intercalate"><span class="hs-identifier hs-var">intercalate</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;, &quot;</span></span><span> </span><span class="annot"><span class="annottext">[String]
</span><a href="#local-6989586621679042827"><span class="hs-identifier hs-var">dirNames</span></a></span><span>
</span><span id="line-121"></span><span>     </span><span class="hs-special">(</span><span id="local-6989586621679042799"><span class="annot"><span class="annottext">Mix
</span><a href="#local-6989586621679042799"><span class="hs-identifier hs-var">x</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span class="annot"><span class="annottext">[Mix]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Mix -&gt; IO Mix
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">Mix
</span><a href="#local-6989586621679042799"><span class="hs-identifier hs-var">x</span></a></span><span>
</span><span id="line-122"></span><span>     </span><span class="annot"><span class="annottext">[Mix]
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; IO Mix
forall a. HasCallStack =&gt; String -&gt; a
</span><a href="../../base/src/GHC.Err.html#error"><span class="hs-identifier hs-var">error</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; IO Mix) -&gt; String -&gt; IO Mix
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;can not find &quot;</span></span><span>
</span><span id="line-123"></span><span>                      </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042825"><span class="hs-identifier hs-var">modName</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; in &quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; [String] -&gt; String
forall a. [a] -&gt; [[a]] -&gt; [a]
</span><a href="../../base/src/Data.OldList.html#intercalate"><span class="hs-identifier hs-var">intercalate</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;, &quot;</span></span><span> </span><span class="annot"><span class="annottext">[String]
</span><a href="#local-6989586621679042827"><span class="hs-identifier hs-var">dirNames</span></a></span><span>
</span><span id="line-124"></span><span>
</span><span id="line-125"></span><span class="annot"><a href="Trace.Hpc.Mix.html#mixName"><span class="hs-identifier hs-type">mixName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-126"></span><span id="mixName"><span class="annot"><span class="annottext">mixName :: String -&gt; ShowS
</span><a href="Trace.Hpc.Mix.html#mixName"><span class="hs-identifier hs-var hs-var">mixName</span></a></span></span><span> </span><span id="local-6989586621679042798"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042798"><span class="hs-identifier hs-var">dirName</span></a></span></span><span> </span><span id="local-6989586621679042797"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042797"><span class="hs-identifier hs-var">name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042798"><span class="hs-identifier hs-var">dirName</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
</span><a href="../../filepath/src/System.FilePath.Windows.html#%3C%2F%3E"><span class="hs-operator hs-var">&lt;/&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042797"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
</span><a href="../../filepath/src/System.FilePath.Windows.html#%3C.%3E"><span class="hs-operator hs-var">&lt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;mix&quot;</span></span><span>
</span><span id="line-127"></span><span>
</span><span id="line-128"></span><span class="hs-comment">-- | Check that hash in .tix and .mix file match.</span><span>
</span><span id="line-129"></span><span class="annot"><a href="Trace.Hpc.Mix.html#checkHash"><span class="hs-identifier hs-type">checkHash</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Trace.Hpc.Tix.html#TixModule"><span class="hs-identifier hs-type">TixModule</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#Mix"><span class="hs-identifier hs-type">Mix</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#Mix"><span class="hs-identifier hs-type">Mix</span></a></span><span>
</span><span id="line-130"></span><span id="checkHash"><span class="annot"><span class="annottext">checkHash :: TixModule -&gt; Mix -&gt; String -&gt; Maybe Mix
</span><a href="Trace.Hpc.Mix.html#checkHash"><span class="hs-identifier hs-var hs-var">checkHash</span></a></span></span><span> </span><span id="local-6989586621679042794"><span class="annot"><span class="annottext">TixModule
</span><a href="#local-6989586621679042794"><span class="hs-identifier hs-var">tix</span></a></span></span><span> </span><span id="local-6989586621679042793"><span class="annot"><span class="annottext">mix :: Mix
</span><a href="#local-6989586621679042793"><span class="hs-identifier hs-var">mix</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="Trace.Hpc.Mix.html#Mix"><span class="hs-identifier hs-type">Mix</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">UTCTime
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679042792"><span class="annot"><span class="annottext">Hash
</span><a href="#local-6989586621679042792"><span class="hs-identifier hs-var">mixHash</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">[MixEntry]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621679042791"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042791"><span class="hs-identifier hs-var">mixPath</span></a></span></span><span>
</span><span id="line-131"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Hash
</span><a href="#local-6989586621679042790"><span class="hs-identifier hs-var">modHash</span></a></span><span> </span><span class="annot"><span class="annottext">Hash -&gt; Hash -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Hash
</span><a href="#local-6989586621679042792"><span class="hs-identifier hs-var">mixHash</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Mix -&gt; Maybe Mix
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Mix
</span><a href="#local-6989586621679042793"><span class="hs-identifier hs-var">mix</span></a></span><span>
</span><span id="line-132"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Maybe Mix
forall a. HasCallStack =&gt; String -&gt; a
</span><a href="../../base/src/GHC.Err.html#error"><span class="hs-identifier hs-var">error</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; Maybe Mix) -&gt; String -&gt; Maybe Mix
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-133"></span><span>      </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;hash in tix file for module &quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042789"><span class="hs-identifier hs-var">modName</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; (&quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Hash -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Hash
</span><a href="#local-6989586621679042790"><span class="hs-identifier hs-var">modHash</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;)\n&quot;</span></span><span>
</span><span id="line-134"></span><span>      </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;does not match hash in &quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679042791"><span class="hs-identifier hs-var">mixPath</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; (&quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Hash -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Hash
</span><a href="#local-6989586621679042792"><span class="hs-identifier hs-var">mixHash</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; ShowS
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;)&quot;</span></span><span>
</span><span id="line-135"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-136"></span><span>    </span><span id="local-6989586621679042789"><span class="annot"><span class="annottext">modName :: String
</span><a href="#local-6989586621679042789"><span class="hs-identifier hs-var hs-var">modName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TixModule -&gt; String
</span><a href="Trace.Hpc.Tix.html#tixModuleName"><span class="hs-identifier hs-var">tixModuleName</span></a></span><span> </span><span class="annot"><span class="annottext">TixModule
</span><a href="#local-6989586621679042794"><span class="hs-identifier hs-var">tix</span></a></span><span>
</span><span id="line-137"></span><span>    </span><span id="local-6989586621679042790"><span class="annot"><span class="annottext">modHash :: Hash
</span><a href="#local-6989586621679042790"><span class="hs-identifier hs-var hs-var">modHash</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TixModule -&gt; Hash
</span><a href="Trace.Hpc.Tix.html#tixModuleHash"><span class="hs-identifier hs-var">tixModuleHash</span></a></span><span> </span><span class="annot"><span class="annottext">TixModule
</span><a href="#local-6989586621679042794"><span class="hs-identifier hs-var">tix</span></a></span><span>
</span><span id="line-138"></span><span>
</span><span id="line-139"></span><span class="hs-comment">------------------------------------------------------------------------------</span><span>
</span><span id="line-140"></span><span>
</span><span id="line-141"></span><span class="hs-keyword">type</span><span> </span><span id="MixEntryDom"><span class="annot"><a href="Trace.Hpc.Mix.html#MixEntryDom"><span class="hs-identifier hs-var">MixEntryDom</span></a></span></span><span> </span><span id="local-6989586621679042787"><span class="annot"><a href="#local-6989586621679042787"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="../../containers/src/Data.Tree.html#Tree"><span class="hs-identifier hs-type">Tree</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Trace.Hpc.Util.html#HpcPos"><span class="hs-identifier hs-type">HpcPos</span></a></span><span class="hs-special">,</span><span class="annot"><a href="#local-6989586621679042787"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-142"></span><span>
</span><span id="line-143"></span><span class="hs-comment">-- A good tree has all its children fully inside its parents HpcPos.</span><span>
</span><span id="line-144"></span><span class="hs-comment">-- No child should have the *same* HpcPos.</span><span>
</span><span id="line-145"></span><span class="hs-comment">-- There is no ordering to the children</span><span>
</span><span id="line-146"></span><span>
</span><span id="line-147"></span><span id="local-6989586621679043176"><span class="annot"><a href="Trace.Hpc.Mix.html#isGoodNode"><span class="hs-identifier hs-type">isGoodNode</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#MixEntryDom"><span class="hs-identifier hs-type">MixEntryDom</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679043176"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-148"></span><span id="isGoodNode"><span class="annot"><span class="annottext">isGoodNode :: forall a. MixEntryDom a -&gt; Bool
</span><a href="Trace.Hpc.Mix.html#isGoodNode"><span class="hs-identifier hs-var hs-var">isGoodNode</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Tree.html#Node"><span class="hs-identifier hs-type">Node</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679042781"><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042781"><span class="hs-identifier hs-var">pos</span></a></span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">a
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621679042780"><span class="annot"><span class="annottext">[Tree (HpcPos, a)]
</span><a href="#local-6989586621679042780"><span class="hs-identifier hs-var">sub_nodes</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-149"></span><span>      </span><span class="annot"><span class="annottext">[Bool] -&gt; Bool
forall (t :: * -&gt; *). Foldable t =&gt; t Bool -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#and"><span class="hs-identifier hs-var">and</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042778"><span class="hs-identifier hs-var">pos'</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos -&gt; HpcPos -&gt; Bool
</span><a href="Trace.Hpc.Util.html#insideHpcPos"><span class="hs-operator hs-var">`insideHpcPos`</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042781"><span class="hs-identifier hs-var">pos</span></a></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../containers/src/Data.Tree.html#Node"><span class="hs-identifier hs-type">Node</span></a></span><span class="hs-special">(</span><span id="local-6989586621679042778"><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042778"><span class="hs-identifier hs-var">pos'</span></a></span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">a
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>  </span><span class="annot"><span class="annottext">[Tree (HpcPos, a)]
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[Tree (HpcPos, a)]
</span><a href="#local-6989586621679042780"><span class="hs-identifier hs-var">sub_nodes</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-150"></span><span>   </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">[Bool] -&gt; Bool
forall (t :: * -&gt; *). Foldable t =&gt; t Bool -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#and"><span class="hs-identifier hs-var">and</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042776"><span class="hs-identifier hs-var">pos'</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos -&gt; HpcPos -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">/=</span></span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042781"><span class="hs-identifier hs-var">pos</span></a></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../containers/src/Data.Tree.html#Node"><span class="hs-identifier hs-type">Node</span></a></span><span class="hs-special">(</span><span id="local-6989586621679042776"><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042776"><span class="hs-identifier hs-var">pos'</span></a></span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">a
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Tree (HpcPos, a)]
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[Tree (HpcPos, a)]
</span><a href="#local-6989586621679042780"><span class="hs-identifier hs-var">sub_nodes</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-151"></span><span>   </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">[Tree (HpcPos, a)] -&gt; Bool
forall a. [MixEntryDom a] -&gt; Bool
</span><a href="Trace.Hpc.Mix.html#isGoodForest"><span class="hs-identifier hs-var">isGoodForest</span></a></span><span> </span><span class="annot"><span class="annottext">[Tree (HpcPos, a)]
</span><a href="#local-6989586621679042780"><span class="hs-identifier hs-var">sub_nodes</span></a></span><span>
</span><span id="line-152"></span><span>
</span><span id="line-153"></span><span class="hs-comment">-- all sub-trees are good trees, and no two HpcPos are inside each other.</span><span>
</span><span id="line-154"></span><span id="local-6989586621679043171"><span class="annot"><a href="Trace.Hpc.Mix.html#isGoodForest"><span class="hs-identifier hs-type">isGoodForest</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Trace.Hpc.Mix.html#MixEntryDom"><span class="hs-identifier hs-type">MixEntryDom</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679043171"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-155"></span><span id="isGoodForest"><span class="annot"><span class="annottext">isGoodForest :: forall a. [MixEntryDom a] -&gt; Bool
</span><a href="Trace.Hpc.Mix.html#isGoodForest"><span class="hs-identifier hs-var hs-var">isGoodForest</span></a></span></span><span> </span><span id="local-6989586621679042765"><span class="annot"><span class="annottext">[MixEntryDom a]
</span><a href="#local-6989586621679042765"><span class="hs-identifier hs-var">sub_nodes</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-156"></span><span>   </span><span class="annot"><span class="annottext">(MixEntryDom a -&gt; Bool) -&gt; [MixEntryDom a] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; (a -&gt; Bool) -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#all"><span class="hs-identifier hs-var">all</span></a></span><span> </span><span class="annot"><span class="annottext">MixEntryDom a -&gt; Bool
forall a. MixEntryDom a -&gt; Bool
</span><a href="Trace.Hpc.Mix.html#isGoodNode"><span class="hs-identifier hs-var">isGoodNode</span></a></span><span> </span><span class="annot"><span class="annottext">[MixEntryDom a]
</span><a href="#local-6989586621679042765"><span class="hs-identifier hs-var">sub_nodes</span></a></span><span>
</span><span id="line-157"></span><span>   </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">[Bool] -&gt; Bool
forall (t :: * -&gt; *). Foldable t =&gt; t Bool -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#and"><span class="hs-identifier hs-var">and</span></a></span><span> </span><span class="hs-special">[</span><span>  </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042762"><span class="hs-identifier hs-var">pos1</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos -&gt; HpcPos -&gt; Bool
</span><a href="Trace.Hpc.Util.html#insideHpcPos"><span class="hs-operator hs-var">`insideHpcPos`</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042761"><span class="hs-identifier hs-var">pos2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">||</span></span><span>
</span><span id="line-158"></span><span>                  </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042761"><span class="hs-identifier hs-var">pos2</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos -&gt; HpcPos -&gt; Bool
</span><a href="Trace.Hpc.Util.html#insideHpcPos"><span class="hs-operator hs-var">`insideHpcPos`</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042762"><span class="hs-identifier hs-var">pos1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-159"></span><span>          </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Tree.html#Node"><span class="hs-identifier hs-type">Node</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679042762"><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042762"><span class="hs-identifier hs-var">pos1</span></a></span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">a
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[MixEntryDom a]
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span id="local-6989586621679042759"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621679042759"><span class="hs-identifier hs-var">n1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[MixEntryDom a] -&gt; [Int] -&gt; [(MixEntryDom a, Int)]
forall a b. [a] -&gt; [b] -&gt; [(a, b)]
</span><a href="../../base/src/GHC.List.html#zip"><span class="hs-identifier hs-var">zip</span></a></span><span> </span><span class="annot"><span class="annottext">[MixEntryDom a]
</span><a href="#local-6989586621679042765"><span class="hs-identifier hs-var">sub_nodes</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-glyph">..</span><span class="hs-special">]</span><span>
</span><span id="line-160"></span><span>          </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Tree.html#Node"><span class="hs-identifier hs-type">Node</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679042761"><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042761"><span class="hs-identifier hs-var">pos2</span></a></span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">a
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[MixEntryDom a]
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span id="local-6989586621679042758"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621679042758"><span class="hs-identifier hs-var">n2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[MixEntryDom a] -&gt; [Int] -&gt; [(MixEntryDom a, Int)]
forall a b. [a] -&gt; [b] -&gt; [(a, b)]
</span><a href="../../base/src/GHC.List.html#zip"><span class="hs-identifier hs-var">zip</span></a></span><span> </span><span class="annot"><span class="annottext">[MixEntryDom a]
</span><a href="#local-6989586621679042765"><span class="hs-identifier hs-var">sub_nodes</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-glyph">..</span><span class="hs-special">]</span><span>
</span><span id="line-161"></span><span>          </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621679042759"><span class="hs-identifier hs-var">n1</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">/=</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621679042758"><span class="hs-identifier hs-var">n2</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-162"></span><span>
</span><span id="line-163"></span><span id="local-6989586621679043167"><span class="annot"><a href="Trace.Hpc.Mix.html#addNodeToTree"><span class="hs-identifier hs-type">addNodeToTree</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679043167"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Trace.Hpc.Util.html#HpcPos"><span class="hs-identifier hs-type">HpcPos</span></a></span><span class="hs-special">,</span><span class="annot"><a href="#local-6989586621679043167"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#MixEntryDom"><span class="hs-identifier hs-type">MixEntryDom</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679043167"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Trace.Hpc.Mix.html#MixEntryDom"><span class="hs-identifier hs-type">MixEntryDom</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679043167"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span></span><span>
</span><span id="line-164"></span><span id="addNodeToTree"><span class="annot"><span class="annottext">addNodeToTree :: forall a.
Show a =&gt;
(HpcPos, a) -&gt; MixEntryDom [a] -&gt; MixEntryDom [a]
</span><a href="Trace.Hpc.Mix.html#addNodeToTree"><span class="hs-identifier hs-var hs-var">addNodeToTree</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679042749"><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042749"><span class="hs-identifier hs-var">new_pos</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621679042748"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679042748"><span class="hs-identifier hs-var">new_a</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Tree.html#Node"><span class="hs-identifier hs-type">Node</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679042747"><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042747"><span class="hs-identifier hs-var">pos</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621679042746"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679042746"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621679042745"><span class="annot"><span class="annottext">[Tree (HpcPos, [a])]
</span><a href="#local-6989586621679042745"><span class="hs-identifier hs-var">children</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-165"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042747"><span class="hs-identifier hs-var">pos</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos -&gt; HpcPos -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042749"><span class="hs-identifier hs-var">new_pos</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(HpcPos, [a]) -&gt; [Tree (HpcPos, [a])] -&gt; Tree (HpcPos, [a])
forall a. a -&gt; [Tree a] -&gt; Tree a
</span><a href="../../containers/src/Data.Tree.html#Node"><span class="hs-identifier hs-var">Node</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042747"><span class="hs-identifier hs-var">pos</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679042748"><span class="hs-identifier hs-var">new_a</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; [a] -&gt; [a]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679042746"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Tree (HpcPos, [a])]
</span><a href="#local-6989586621679042745"><span class="hs-identifier hs-var">children</span></a></span><span>
</span><span id="line-166"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042749"><span class="hs-identifier hs-var">new_pos</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos -&gt; HpcPos -&gt; Bool
</span><a href="Trace.Hpc.Util.html#insideHpcPos"><span class="hs-operator hs-var">`insideHpcPos`</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042747"><span class="hs-identifier hs-var">pos</span></a></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-167"></span><span>       </span><span class="annot"><span class="annottext">(HpcPos, [a]) -&gt; [Tree (HpcPos, [a])] -&gt; Tree (HpcPos, [a])
forall a. a -&gt; [Tree a] -&gt; Tree a
</span><a href="../../containers/src/Data.Tree.html#Node"><span class="hs-identifier hs-var">Node</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042747"><span class="hs-identifier hs-var">pos</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679042746"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(HpcPos, a) -&gt; [Tree (HpcPos, [a])] -&gt; [Tree (HpcPos, [a])]
forall a.
Show a =&gt;
(HpcPos, a) -&gt; [MixEntryDom [a]] -&gt; [MixEntryDom [a]]
</span><a href="Trace.Hpc.Mix.html#addNodeToList"><span class="hs-identifier hs-var">addNodeToList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042749"><span class="hs-identifier hs-var">new_pos</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679042748"><span class="hs-identifier hs-var">new_a</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Tree (HpcPos, [a])]
</span><a href="#local-6989586621679042745"><span class="hs-identifier hs-var">children</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-168"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042747"><span class="hs-identifier hs-var">pos</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos -&gt; HpcPos -&gt; Bool
</span><a href="Trace.Hpc.Util.html#insideHpcPos"><span class="hs-operator hs-var">`insideHpcPos`</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042749"><span class="hs-identifier hs-var">new_pos</span></a></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-169"></span><span>       </span><span class="annot"><span class="annottext">String -&gt; Tree (HpcPos, [a])
forall a. HasCallStack =&gt; String -&gt; a
</span><a href="../../base/src/GHC.Err.html#error"><span class="hs-identifier hs-var">error</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;precondition not met inside addNodeToNode&quot;</span></span><span>
</span><span id="line-170"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Tree (HpcPos, [a])
forall a. HasCallStack =&gt; String -&gt; a
</span><a href="../../base/src/GHC.Err.html#error"><span class="hs-identifier hs-var">error</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;something impossible happened in addNodeToTree&quot;</span></span><span>
</span><span id="line-171"></span><span>
</span><span id="line-172"></span><span id="local-6989586621679043164"><span class="annot"><a href="Trace.Hpc.Mix.html#addNodeToList"><span class="hs-identifier hs-type">addNodeToList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679043164"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Trace.Hpc.Util.html#HpcPos"><span class="hs-identifier hs-type">HpcPos</span></a></span><span class="hs-special">,</span><span class="annot"><a href="#local-6989586621679043164"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Trace.Hpc.Mix.html#MixEntryDom"><span class="hs-identifier hs-type">MixEntryDom</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679043164"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Trace.Hpc.Mix.html#MixEntryDom"><span class="hs-identifier hs-type">MixEntryDom</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679043164"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span class="hs-special">]</span></span><span>
</span><span id="line-173"></span><span id="addNodeToList"><span class="annot"><span class="annottext">addNodeToList :: forall a.
Show a =&gt;
(HpcPos, a) -&gt; [MixEntryDom [a]] -&gt; [MixEntryDom [a]]
</span><a href="Trace.Hpc.Mix.html#addNodeToList"><span class="hs-identifier hs-var hs-var">addNodeToList</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679042735"><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042735"><span class="hs-identifier hs-var">new_pos</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621679042734"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679042734"><span class="hs-identifier hs-var">new_a</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621679042733"><span class="annot"><span class="annottext">[MixEntryDom [a]]
</span><a href="#local-6989586621679042733"><span class="hs-identifier hs-var">entries</span></a></span></span><span>
</span><span id="line-174"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-175"></span><span>  </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">[()] -&gt; Int
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Int
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-176"></span><span>          </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679042732"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621679042732"><span class="hs-identifier hs-var">am_inside</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621679042731"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621679042731"><span class="hs-identifier hs-var">am_outside</span></a></span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">MixEntryDom [a]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[(Bool, Bool, MixEntryDom [a])]
</span><a href="#local-6989586621679042730"><span class="hs-identifier hs-var">entries'</span></a></span><span>
</span><span id="line-177"></span><span>          </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621679042732"><span class="hs-identifier hs-var">am_inside</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">||</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621679042731"><span class="hs-identifier hs-var">am_outside</span></a></span><span>
</span><span id="line-178"></span><span>          </span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>
</span><span id="line-179"></span><span>     </span><span class="hs-comment">-- The case where we have a new HpcPos range</span><span>
</span><span id="line-180"></span><span>     </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">(HpcPos, [a]) -&gt; [MixEntryDom [a]] -&gt; MixEntryDom [a]
forall a. a -&gt; [Tree a] -&gt; Tree a
</span><a href="../../containers/src/Data.Tree.html#Node"><span class="hs-identifier hs-var">Node</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042735"><span class="hs-identifier hs-var">new_pos</span></a></span><span class="hs-special">,</span><span class="hs-special">[</span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679042734"><span class="hs-identifier hs-var">new_a</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">MixEntryDom [a] -&gt; [MixEntryDom [a]] -&gt; [MixEntryDom [a]]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[MixEntryDom [a]]
</span><a href="#local-6989586621679042733"><span class="hs-identifier hs-var">entries</span></a></span><span> </span><span class="hs-keyword">else</span><span>
</span><span id="line-181"></span><span>  </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">[()] -&gt; Int
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Int
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-182"></span><span>            </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679042729"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621679042729"><span class="hs-identifier hs-var">am_inside</span></a></span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">MixEntryDom [a]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[(Bool, Bool, MixEntryDom [a])]
</span><a href="#local-6989586621679042730"><span class="hs-identifier hs-var">entries'</span></a></span><span>
</span><span id="line-183"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621679042729"><span class="hs-identifier hs-var">am_inside</span></a></span><span>
</span><span id="line-184"></span><span>            </span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&gt;</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>
</span><span id="line-185"></span><span>     </span><span class="hs-comment">-- The case where we are recursing into a tree</span><span>
</span><span id="line-186"></span><span>     </span><span class="hs-comment">-- Note we can recurse down many branches, in the case of</span><span>
</span><span id="line-187"></span><span>     </span><span class="hs-comment">-- overlapping ranges.</span><span>
</span><span id="line-188"></span><span>     </span><span class="hs-comment">-- Assumes we have captures the new HpcPos</span><span>
</span><span id="line-189"></span><span>     </span><span class="hs-comment">-- (or the above conditional would be true)</span><span>
</span><span id="line-190"></span><span>     </span><span class="hs-keyword">then</span><span> </span><span class="hs-special">[</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621679042727"><span class="hs-identifier hs-var">i_am_inside</span></a></span><span>  </span><span class="hs-comment">-- or the same as</span><span>
</span><span id="line-191"></span><span>            </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">(HpcPos, a) -&gt; MixEntryDom [a] -&gt; MixEntryDom [a]
forall a.
Show a =&gt;
(HpcPos, a) -&gt; MixEntryDom [a] -&gt; MixEntryDom [a]
</span><a href="Trace.Hpc.Mix.html#addNodeToTree"><span class="hs-identifier hs-var">addNodeToTree</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042735"><span class="hs-identifier hs-var">new_pos</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679042734"><span class="hs-identifier hs-var">new_a</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">MixEntryDom [a]
</span><a href="#local-6989586621679042726"><span class="hs-identifier hs-var">node</span></a></span><span>
</span><span id="line-192"></span><span>            </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">MixEntryDom [a]
</span><a href="#local-6989586621679042726"><span class="hs-identifier hs-var">node</span></a></span><span>
</span><span id="line-193"></span><span>          </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679042727"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621679042727"><span class="hs-identifier hs-var">i_am_inside</span></a></span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span id="local-6989586621679042726"><span class="annot"><span class="annottext">MixEntryDom [a]
</span><a href="#local-6989586621679042726"><span class="hs-identifier hs-var">node</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[(Bool, Bool, MixEntryDom [a])]
</span><a href="#local-6989586621679042730"><span class="hs-identifier hs-var">entries'</span></a></span><span>
</span><span id="line-194"></span><span>          </span><span class="hs-special">]</span><span> </span><span class="hs-keyword">else</span><span>
</span><span id="line-195"></span><span>     </span><span class="hs-comment">-- The case of a super-range.</span><span>
</span><span id="line-196"></span><span>     </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="annottext">(HpcPos, [a]) -&gt; [MixEntryDom [a]] -&gt; MixEntryDom [a]
forall a. a -&gt; [Tree a] -&gt; Tree a
</span><a href="../../containers/src/Data.Tree.html#Node"><span class="hs-identifier hs-var">Node</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042735"><span class="hs-identifier hs-var">new_pos</span></a></span><span class="hs-special">,</span><span class="hs-special">[</span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679042734"><span class="hs-identifier hs-var">new_a</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-197"></span><span>             </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">MixEntryDom [a]
</span><a href="#local-6989586621679042725"><span class="hs-identifier hs-var">node</span></a></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span class="hs-special">,</span><span id="local-6989586621679042725"><span class="annot"><span class="annottext">MixEntryDom [a]
</span><a href="#local-6989586621679042725"><span class="hs-identifier hs-var">node</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[(Bool, Bool, MixEntryDom [a])]
</span><a href="#local-6989586621679042730"><span class="hs-identifier hs-var">entries'</span></a></span><span> </span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">MixEntryDom [a] -&gt; [MixEntryDom [a]] -&gt; [MixEntryDom [a]]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span>
</span><span id="line-198"></span><span>       </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">MixEntryDom [a]
</span><a href="#local-6989586621679042724"><span class="hs-identifier hs-var">node</span></a></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span class="hs-special">,</span><span id="local-6989586621679042724"><span class="annot"><span class="annottext">MixEntryDom [a]
</span><a href="#local-6989586621679042724"><span class="hs-identifier hs-var">node</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[(Bool, Bool, MixEntryDom [a])]
</span><a href="#local-6989586621679042730"><span class="hs-identifier hs-var">entries'</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-199"></span><span>     </span><span class="hs-special">)</span><span>
</span><span id="line-200"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-201"></span><span>    </span><span id="local-6989586621679042730"><span class="annot"><span class="annottext">entries' :: [(Bool, Bool, MixEntryDom [a])]
</span><a href="#local-6989586621679042730"><span class="hs-identifier hs-var hs-var">entries'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042735"><span class="hs-identifier hs-var">new_pos</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos -&gt; HpcPos -&gt; Bool
</span><a href="Trace.Hpc.Util.html#insideHpcPos"><span class="hs-operator hs-var">`insideHpcPos`</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042723"><span class="hs-identifier hs-var">pos</span></a></span><span>
</span><span id="line-202"></span><span>                 </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042723"><span class="hs-identifier hs-var">pos</span></a></span><span>  </span><span class="annot"><span class="annottext">HpcPos -&gt; HpcPos -&gt; Bool
</span><a href="Trace.Hpc.Util.html#insideHpcPos"><span class="hs-operator hs-var">`insideHpcPos`</span></a></span><span> </span><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042735"><span class="hs-identifier hs-var">new_pos</span></a></span><span>
</span><span id="line-203"></span><span>                 </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">MixEntryDom [a]
</span><a href="#local-6989586621679042722"><span class="hs-identifier hs-var">node</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-204"></span><span>               </span><span class="hs-glyph">|</span><span> </span><span id="local-6989586621679042722"><span class="annot"><span class="annottext">node :: MixEntryDom [a]
</span><a href="#local-6989586621679042722"><span class="hs-identifier hs-var">node</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Tree.html#Node"><span class="hs-identifier hs-type">Node</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679042723"><span class="annot"><span class="annottext">HpcPos
</span><a href="#local-6989586621679042723"><span class="hs-identifier hs-var">pos</span></a></span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">[a]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[MixEntryDom [a]]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[MixEntryDom [a]]
</span><a href="#local-6989586621679042733"><span class="hs-identifier hs-var">entries</span></a></span><span>
</span><span id="line-205"></span><span>               </span><span class="hs-special">]</span><span>
</span><span id="line-206"></span><span>
</span><span id="line-207"></span><span id="local-6989586621679043162"><span class="annot"><a href="Trace.Hpc.Mix.html#createMixEntryDom"><span class="hs-identifier hs-type">createMixEntryDom</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679043162"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><a href="Trace.Hpc.Util.html#HpcPos"><span class="hs-identifier hs-type">HpcPos</span></a></span><span class="hs-special">,</span><span class="annot"><a href="#local-6989586621679043162"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Trace.Hpc.Mix.html#MixEntryDom"><span class="hs-identifier hs-type">MixEntryDom</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679043162"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span class="hs-special">]</span></span><span>
</span><span id="line-208"></span><span id="createMixEntryDom"><span class="annot"><span class="annottext">createMixEntryDom :: forall a. Show a =&gt; [(HpcPos, a)] -&gt; [MixEntryDom [a]]
</span><a href="Trace.Hpc.Mix.html#createMixEntryDom"><span class="hs-identifier hs-var hs-var">createMixEntryDom</span></a></span></span><span> </span><span id="local-6989586621679042718"><span class="annot"><span class="annottext">[(HpcPos, a)]
</span><a href="#local-6989586621679042718"><span class="hs-identifier hs-var">entries</span></a></span></span><span>
</span><span id="line-209"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">[MixEntryDom [a]] -&gt; Bool
forall a. [MixEntryDom a] -&gt; Bool
</span><a href="Trace.Hpc.Mix.html#isGoodForest"><span class="hs-identifier hs-var">isGoodForest</span></a></span><span> </span><span class="annot"><span class="annottext">[MixEntryDom [a]]
</span><a href="#local-6989586621679042717"><span class="hs-identifier hs-var">forest</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[MixEntryDom [a]]
</span><a href="#local-6989586621679042717"><span class="hs-identifier hs-var">forest</span></a></span><span>
</span><span id="line-210"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; [MixEntryDom [a]]
forall a. HasCallStack =&gt; String -&gt; a
</span><a href="../../base/src/GHC.Err.html#error"><span class="hs-identifier hs-var">error</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;createMixEntryDom: bad forest&quot;</span></span><span>
</span><span id="line-211"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679042717"><span class="annot"><span class="annottext">forest :: [MixEntryDom [a]]
</span><a href="#local-6989586621679042717"><span class="hs-identifier hs-var hs-var">forest</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((HpcPos, a) -&gt; [MixEntryDom [a]] -&gt; [MixEntryDom [a]])
-&gt; [MixEntryDom [a]] -&gt; [(HpcPos, a)] -&gt; [MixEntryDom [a]]
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="annot"><span class="annottext">(HpcPos, a) -&gt; [MixEntryDom [a]] -&gt; [MixEntryDom [a]]
forall a.
Show a =&gt;
(HpcPos, a) -&gt; [MixEntryDom [a]] -&gt; [MixEntryDom [a]]
</span><a href="Trace.Hpc.Mix.html#addNodeToList"><span class="hs-identifier hs-var">addNodeToList</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[(HpcPos, a)]
</span><a href="#local-6989586621679042718"><span class="hs-identifier hs-var">entries</span></a></span><span>
</span><span id="line-212"></span></pre></body></html>